三十天前,我們懷著一個單純的目標啟程:學習如何使用 Locust 這款強大的開源工具來對我們的應用程式進行壓力測試。我們從 locustfile.py
的基礎寫法開始,學習模擬使用者行為、分配任務權重,並透過 Locust 的 Web UI 和命令列工具來執行測試、解讀報告。
然而,這趟旅程很快就超越了「壓力測試」本身的範疇,帶領我們進入一個更廣闊、更深刻的領域:系統可觀測性(Observability)。
我們的探索之路,大致可以分為四個階段:
第一階段:掌握壓力測試(Locust)
我們專注於 Locust 的核心功能,學會了如何量化系統的效能極限。但我們很快就發現,知道「系統在 1000 個並發用戶時會變慢」是不夠的,我們更需要知道「為什麼會變慢」。
第二階段:引入日誌聚合(Loki)
為了解答「為什麼」,我們引入了 Grafana Loki。透過在我們的環境中部署 Loki,並讓應用程式將日誌發送給它,我們首次能夠將壓力測試期間的系統行為(應用日誌)與測試結果關聯起來。透過 LogQL,我們學會了如何在數以萬計的日誌中,精準地篩選出錯誤訊息和關鍵線索。
第三階段:擁抱指標監控(Prometheus & Mimir)
日誌提供了詳細的「事件」記錄,但我們還需要更宏觀的「狀態」視圖。於是,Prometheus 和 Grafana Mimir 進入了我們的視野。我們學會了如何讓應用程式暴露指標(Metrics),並使用 Prometheus 進行收集,再由 Mimir 進行長期儲存。CPU 使用率、記憶體消耗、API 回應延遲... 這些量化的指標讓我們對系統的健康狀況有了更全面的了解。
第四階段:深入程式碼效能(Pyroscope)
即使有了日誌和指標,有時效能瓶頸仍然深藏在程式碼的細節之中。Day 29,我們引入了最後一塊,也是最精細的一塊拼圖:Grafana Pyroscope。透過持續性效能分析,我們獲得了直達程式碼層級的火焰圖,能夠清晰地看到哪個函式、哪一行程式碼佔用了最多的 CPU 資源。這為我們提供了終極的優化依據。
而將這一切串連起來的神經中樞,正是 Grafana。它不僅是個儀表板,更是我們整合日誌、指標和效能剖析數據的統一平台,讓我們能從單一窗口洞察系統的全貌。
回首這三十天,我們最大的收穫,是建立了一套現代化的效能工程思維:
效能工程不再是孤立的測試環節,而是與開發、維運緊密結合,由數據驅動的持續性活動。它的核心是建立一個強大的可觀測性平台,讓我們能隨時提出關於系統的任何問題,並從日誌、指標和追蹤(Traces/Profiles)中找到答案。
這三十天的馬拉松是終點,但更是你個人技術旅程的新起點。接下來,你可以嘗試:
感謝你堅持走完這三十天的旅程。希望這段經歷能為你打開一扇新的大門,讓你更有信心地去打造更穩定、更高效、更可靠的軟體系統。
旅程未完,探索不止。我們下一段冒險再會!